package com.zhilianbao.leyaogo.http.api;

import android.content.Context;

import com.bql.utils.AESOperator;
import com.bql.utils.CheckUtils;
import com.bql.utils.FileUtils;
import com.zhilianbao.leyaogo.constants.HttpConfig;
import com.zhilianbao.leyaogo.http.client.LeYaoGoClient;
import com.zhilianbao.leyaogo.http.client.UploadClient;
import com.zhilianbao.leyaogo.utils.Utils;
import com.zhilianbao.okhttputils.callback.Callback;
import com.zhilianbao.okhttputils.model.HttpParams;
import com.zhilianbao.okhttputils.model.JsonParams;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;

/**
 * ClassName: AccountApi <br>
 * Description: 账户相关API<br>
 * Author: Cyarie <br>
 * Created: 2016/7/20 14:16 <br>
 * Update Time：<br>
 * Update Description：<br>
 */
public class AccountApi {

    /**
     * 登录接口
     *
     * @param context
     * @param loginType 登录方式 0 账号+密码,1 手机+验证码
     * @param userName  用户名/手机号
     * @param password  密码 标准MD5/手机验证码
     */
    public static void login(Context context, int loginType, String userName, String password, Callback callback) {
        JsonParams jsonParams = new JsonParams();
        jsonParams.put("loginType", loginType);
        jsonParams.put("userName", userName);
        jsonParams.put("password", loginType == 0 ? AESOperator.encodeMD5(password) : password);
        LeYaoGoClient.post(context, HttpConfig.BASE_URL + HttpConfig.METHOD_USER_LOGIN, jsonParams, callback);

    }

    /**
     * 修改登录密码
     *
     * @param context
     * @param userId   用户ID
     * @param tokenId  登录tokenId
     * @param oldPwd   旧密码
     * @param freshPwd 新密码
     * @param callback
     */
    public static void updateLoginPwd(Context context, long userId, String tokenId, String oldPwd, String freshPwd, Callback callback) {
        JsonParams jsonParams = new JsonParams();
        jsonParams.put("userId", userId);
        jsonParams.put("tokenId", tokenId);
        jsonParams.put("oldPwd", AESOperator.encodeMD5(oldPwd));
        jsonParams.put("freshPwd", AESOperator.encodeMD5(freshPwd));
        LeYaoGoClient.post(context, HttpConfig.BASE_URL + HttpConfig.METHOD_UPDATE_LOGIN_PWD, jsonParams, callback);

    }

    /**
     * 重置密码
     *
     * @param context
     * @param userMobile 手机号码
     * @param password   密码
     * @param mobileCode 手机短信验证码
     * @param callback
     */
    public static void resetPassword(Context context, String userMobile, String password, String mobileCode, Callback callback) {
        JsonParams jsonParams = new JsonParams();
        jsonParams.put("userMobile", userMobile);
        jsonParams.put("password", AESOperator.encodeMD5(password));
        jsonParams.put("mobileCode", mobileCode);
        LeYaoGoClient.post(context, HttpConfig.BASE_URL + HttpConfig.METHOD_RESET_PWD, jsonParams, callback);
    }

    /**
     * 验证用户有效性
     *
     * @param context
     * @param validType  0: 手机 1: 用户名 2：邮箱
     * @param validValue 用户名/手机号/邮箱
     * @param callback
     */
    public static void verifyCellPhone(Context context, int validType, String validValue, Callback callback) {
        JsonParams jsonParams = new JsonParams();
        jsonParams.put("validType", validType);
        jsonParams.put("validValue", validValue);
        LeYaoGoClient.post(context, HttpConfig.BASE_URL + HttpConfig.METHOD_VALID_USER, jsonParams, callback);
    }

    /**
     * 发送手机验证码
     *
     * @param context
     * @param userMobile
     * @param callback
     */
    public static void sendVerifyCode(Context context, String userMobile, Callback callback) {
        JsonParams jsonParams = new JsonParams();
        jsonParams.put("userMobile", userMobile);
        LeYaoGoClient.post(context, HttpConfig.BASE_URL + HttpConfig.METHOD_SEND_CODE_SMS, jsonParams, callback);
    }

    /**
     * 验证手机验证码
     *
     * @param context
     * @param userMobile 手机号码
     * @param mobileCode 短信验证码
     * @param callback
     */
    public static void verifyCode(Context context, String userMobile, String mobileCode, Callback callback) {
        JsonParams jsonParams = new JsonParams();
        jsonParams.put("userMobile", userMobile);
        jsonParams.put("mobileCode", mobileCode);
        LeYaoGoClient.post(context, HttpConfig.BASE_URL + HttpConfig.METHOD_VALID_CODE, jsonParams, callback);
    }

    /**
     * 用户注册
     *
     * @param context
     * @param userMobile
     * @param password
     * @param mobileCode
     * @param callback
     */
    public static void regUser(Context context, String userMobile, String password, String mobileCode, Callback callback) {
        JsonParams jsonParams = new JsonParams();
        jsonParams.put("userMobile", userMobile);
        jsonParams.put("password", AESOperator.encodeMD5(password));
        jsonParams.put("mobileCode", mobileCode);
        LeYaoGoClient.post(context, HttpConfig.BASE_URL + HttpConfig.METHOD_REG_USER, jsonParams, callback);
    }

    /**
     * 修改用户信息
     *
     * @param context
     * @param optUserId 当前操作者Id
     * @param tokenId   登录的tokenID
     * @param userId    需要获取的用户Id
     * @param birthday  (string, optional): 出生日期(可选，格式:yyyy-MM-dd，比如：2000-01-01) ,
     * @param sex       (integer, optional): 性别 0 男 1 女 2 保密 ,
     * @param userPic   (string, optional): 用户图片 存MD5 ,
     * @param nickName  (string, optional): 昵称 ,
     * @param realName  (string, optional): 真实姓名 ,
     *                  province (string, optional): 省 ,
     *                  city (string, optional): 市 ,
     *                  area (string, optional): 区 ,
     *                  address (string, optional): 详细地址 ,
     *                  strAddress (string, optional): 用户所在地(可选，格式:省份-城市-县，比如：辽宁省-鞍山市-铁东区)
     */

    public static void updateUserInfo(Context context, long optUserId, String tokenId, long userId, String birthday, int sex, String userPic, String realName, String nickName, Callback callback) {
        JsonParams jsonParams = new JsonParams();
        jsonParams.put("optUserId", optUserId);
        if (!CheckUtils.isEmpty(tokenId)) {
            jsonParams.put("tokenId", tokenId);
        }
        jsonParams.put("userId", userId);
        if (!CheckUtils.isEmpty(birthday)) {
            jsonParams.put("birthday", birthday);
        }
        if (sex != -1) {
            jsonParams.put("sex", sex);
        }
        if (!CheckUtils.isEmpty(userPic)) {
            jsonParams.put("userPic", userPic);
        }
        if (!CheckUtils.isEmpty(realName)) {
            jsonParams.put("realName", realName);
        }
        if (!CheckUtils.isEmpty(nickName)) {
            jsonParams.put("nickName", nickName);
        }
        LeYaoGoClient.post(context, HttpConfig.BASE_URL + HttpConfig.METHOD_UPDATE_USER_INFO, jsonParams, callback);

    }

    /**
     * 获取用户信息
     *
     * @param context
     * @param optUserId 当前操作者Id
     * @param tokenId   登录的tokenID
     * @param userId    需要获取的用户Id
     */
    public static void getUserInfo(Context context, long optUserId, String tokenId, long userId, Callback callback) {
        JsonParams jsonParams = new JsonParams();
        jsonParams.put("optUserId", optUserId);
        jsonParams.put("tokenId", tokenId);
        jsonParams.put("userId", userId);
        LeYaoGoClient.post(context, HttpConfig.BASE_URL + HttpConfig.METHOD_GET_USER_INFO, jsonParams, callback);

    }

    /**
     * 获取我的优惠券列表
     *
     * @param context
     * @param userId  需要获取的用户Id
     *                pageNo (integer, optional): 当前页 ,
     *                pageSize (integer, optional): 每页显示行数 ,
     *                offset (integer, optional)
     */
    public static void getMyCouponList(Context context, long userId, long supplierId, int pageNo, int pageSize, Callback callback) {
        JsonParams jsonParams = new JsonParams();
        jsonParams.put("userId", userId);
        jsonParams.put("supplierId", supplierId);
        if (pageNo != 0) {
            jsonParams.put("pageNo", pageNo);
        }
        if (pageSize != 0) {
            jsonParams.put("pageSize", pageSize);
        }
        LeYaoGoClient.post(context, HttpConfig.BASE_URL + HttpConfig.METHOD_GET_MY_COUPON_LIST, jsonParams, callback);

    }

    /**
     * 获取优惠券适用商品列表
     *
     * @param context
     * @param couponsId 优惠券Id
     * @param userId
     * @param pageNo    当前页
     * @param pageSize  每页显示行
     * @param callback
     */

    public static void getCanUsedGoodsList(Context context, long couponsId, long userId, int pageNo, int pageSize, Callback callback) {
        JsonParams jsonParams = new JsonParams();
        jsonParams.put("couponsId", couponsId);
        jsonParams.put("userId", userId);
        jsonParams.put("pageNo", pageNo);
        jsonParams.put("pageSize", pageSize);
        LeYaoGoClient.post(context, HttpConfig.BASE_URL + HttpConfig.METHOD_GET_CAN_USED_GOODS_LIST, jsonParams, callback);
    }


    /**
     * 获取我的收藏列表
     *
     * @param context
     * @param userId
     * @param supplierId   对应运营商ID
     * @param enshrineType 收藏类型 0 店铺 1 商品
     * @param pageNo       当前页
     * @param pageSize     每页显示行数
     * @param callback
     */
    public static void getMyCollectionGoodsList(Context context, long userId, long supplierId, int enshrineType, int pageNo, int pageSize, Callback callback) {
        JsonParams jsonParams = new JsonParams();
        jsonParams.put("userId", userId);
        jsonParams.put("supplierId", supplierId);
        jsonParams.put("enshrineType", enshrineType);
        jsonParams.put("pageNo", pageNo);
        jsonParams.put("pageSize", pageSize);
        LeYaoGoClient.post(context, HttpConfig.BASE_URL + HttpConfig.METHOD_GET_MY_COLLECTION_GOODS_LIST, jsonParams, callback);
    }

    /**
     * 设置电商收藏记录
     *
     * @param context
     * @param type         操作类型 0 删除 1 添加 ,
     * @param userId
     * @param supplierId   对应运营商 integerMin. Value:1,
     * @param enshrineType 收藏类型 0 店铺 1 商品
     * @param shopId       店铺编号
     * @param goodsId      SUP/SUK产品编号
     * @param goodsSkuId   SKU商品编号
     * @param setSign      设置标签
     * @param comments     备注
     * @param callback
     */
    public static void setMyCollectionGoods(Context context, int type, long userId, long supplierId, int enshrineType, long shopId, long goodsId, long goodsSkuId, String setSign, String comments, Callback callback) {
        JsonParams jsonParams = new JsonParams();
        jsonParams.put("type", type);
        jsonParams.put("userId", userId);
        jsonParams.put("supplierId", supplierId);
        jsonParams.put("enshrineType", enshrineType);
        jsonParams.put("shopId", shopId);
        jsonParams.put("goodsId", goodsId);
        jsonParams.put("goodsSkuId", goodsSkuId);
        jsonParams.put("setSign", setSign);
        jsonParams.put("comments", comments);
        LeYaoGoClient.post(context, HttpConfig.BASE_URL + HttpConfig.METHOD_SET_MY_COLLECTION_GOODS, jsonParams, callback);
    }

    /**
     * 获取我的订单列表
     *
     * @param context
     * @param userId
     * @param supplierId 运营商Id
     * @param type       请求类型 0全部订单 1待付款 2待发货 3配送中4待评价 5返修/退换
     * @param orderType  订单类型 0 普通订单 1 虚拟订单 2 充值订单 4 团购订单
     * @param keyword    关键词(商品名称/商品编号/订单号) 请求类型不为0时 关键词无用
     * @param pageNo     当前页
     * @param pageSize   每页显示行数
     * @param callback
     */
    public static void getMyOrderList(Context context, long userId, long supplierId, int type, int orderType, String keyword, int pageNo, int pageSize, Callback callback) {
        JsonParams jsonParams = new JsonParams();
        jsonParams.put("userId", userId);
        jsonParams.put("supplierId", supplierId);
        jsonParams.put("type", type);
        jsonParams.put("orderType", orderType);
        jsonParams.put("keyword", keyword);
        jsonParams.put("pageNo", pageNo);
        jsonParams.put("pageSize", pageSize);
        LeYaoGoClient.post(context, HttpConfig.BASE_URL + HttpConfig.METHOD_GET_MY_ORDER_LIST, jsonParams, callback);
    }

    /**
     * 操作订单
     *
     * @param context
     * @param orderId  订单Id integerMin. Value:1
     * @param userId
     * @param type     操作类型 0删除订单 1取消订单 2确认收货
     * @param callback
     */
    public static void setOrder(Context context, long orderId, long userId, int type, Callback callback) {
        JsonParams jsonParams = new JsonParams();
        jsonParams.put("orderId", orderId);
        jsonParams.put("userId", userId);
        jsonParams.put("type", type);
        LeYaoGoClient.post(context, HttpConfig.BASE_URL + HttpConfig.METHOD_SET_ORDER, jsonParams, callback);
    }

    /**
     * 获取订单详情
     *
     * @param context
     * @param orderId  订单Id integerMin. Value:1,
     * @param userId
     * @param callback
     */
    public static void getOrderDetail(Context context, long orderId, long userId, Callback callback) {
        JsonParams jsonParams = new JsonParams();
        jsonParams.put("orderId", orderId);
        jsonParams.put("userId", userId);
        LeYaoGoClient.post(context, HttpConfig.BASE_URL + HttpConfig.METHOD_GET_ORDER_DETAIL, jsonParams, callback);
    }

    /**
     * 获取我的实物充值卡列表
     *
     * @param context
     * @param userId
     * @param supplierId 所属运营商
     * @param callback   回调
     * @param type       (integer, optional): 请求类型 1表示能使用的卡券 ,
     * @param pageNo     (integer, optional): 当前页 ,
     * @param pageSize   (integer, optional): 每页显示行数 ,
     *                   offset (integer, optional)
     */
    public static void getMyCardVoucherList(Context context, long userId, long supplierId, int type, int pageNo, int pageSize, Callback callback) {
        JsonParams jsonParams = new JsonParams();
        jsonParams.put("userId", userId);
        jsonParams.put("supplierId", supplierId);
        if (type == 1) {
            jsonParams.put("type", type);
        }
        if (pageNo != 0) {
            jsonParams.put("pageNo", pageNo);
        }
        if (pageSize != 0) {
            jsonParams.put("pageSize", pageSize);
        }
        LeYaoGoClient.post(context, HttpConfig.BASE_URL + HttpConfig.METHOD_GET_MY_CARD_VOUCHER, jsonParams, callback);
    }

    /**
     * 获取电商线上销售卡列表
     *
     * @param context
     * @param userId
     * @param supplierId
     * @param pageNo
     * @param pageSize
     * @param callback
     */
    public static void getRechargeSaleCardList(Context context, long userId, long supplierId, int pageNo, int pageSize, Callback callback) {
        JsonParams jsonParams = new JsonParams();
        jsonParams.put("userId", userId);
        jsonParams.put("supplierId", supplierId);
        jsonParams.put("pageNo", pageNo);
        jsonParams.put("pageSize", pageSize);
        LeYaoGoClient.post(context, HttpConfig.BASE_URL + HttpConfig.METHOD_GET_RECHARGE_SALE_CARD_LIST, jsonParams, callback);
    }

    /**
     * 激活实物充值卡
     *
     * @param context
     * @param userId
     * @param cardSeq  卡序号 验证凭证 UUID
     * @param cardPwd  卡密码 验证凭证 UUID
     * @param callback
     */
    public static void activationRechargeCard(Context context, long userId, String cardSeq, String cardPwd, Callback callback) {
        JsonParams jsonParams = new JsonParams();
        jsonParams.put("userId", userId);
        jsonParams.put("cardSeq", cardSeq);
        jsonParams.put("cardPwd", cardPwd);
        LeYaoGoClient.post(context, HttpConfig.BASE_URL + HttpConfig.METHOD_ACTIVATION_RECHARGE_CARD, jsonParams, callback);
    }

    /**
     * 获取充值商品列表
     *
     * @param context
     * @param supplierId 所属运营商 integerMin. Value:1
     * @param pageNo     当前页
     * @param pageSize   每页显示行数
     * @param callback
     */
    public static void getRechargeGoodsList(Context context, long supplierId, int pageNo, int pageSize, Callback callback) {
        JsonParams jsonParams = new JsonParams();
        jsonParams.put("supplierId", supplierId);
        jsonParams.put("pageNo", pageNo);
        jsonParams.put("pageSize", pageSize);
        LeYaoGoClient.post(context, HttpConfig.BASE_URL + HttpConfig.METHOD_GET_RECHARGE_GOODS_LIST, jsonParams, callback);
    }

    /**
     * 充值
     *
     * @param context
     * @param userId
     * @param goodsId   goodsId 商品ID ,
     * @param addressId (integer, optional):配送地址ID
     * @param callback
     */
    public static void recharge(Context context, long userId, long goodsId, long addressId, Callback callback) {
        JsonParams jsonParams = new JsonParams();
        jsonParams.put("userId", userId);
        jsonParams.put("goodsId", goodsId);
        if (addressId != 0) {
            jsonParams.put("addressId", addressId);
        }
        LeYaoGoClient.post(context, HttpConfig.BASE_URL + HttpConfig.METHOD_RECHARGE, jsonParams, callback);
    }

    /**
     * 获取我的页面红点数值
     *
     * @param context
     * @param userId
     * @param supplierId
     * @param callback
     */
    public static void getMyRedDotValue(Context context, long userId, long supplierId, Callback callback) {
        JsonParams jsonParams = new JsonParams();
        jsonParams.put("userId", userId);
        jsonParams.put("supplierId", supplierId);
        LeYaoGoClient.post(context, HttpConfig.BASE_URL + HttpConfig.METHOD_GET_MY_RED_DOT_VALUE, jsonParams, callback);
    }

    /**
     * 获取资金明细列表
     *
     * @param context
     * @param userId
     * @param supplierId 运营商Id integerMin. Value:1
     * @param type       类别 1:消费 2:充值 3:退款 4:提现
     * @param pageNo     (integer, optional): 当前页
     * @param pageSize   (integer, optional): 每页显示行数
     * @param callback
     */
    public static void getFundRecordPageList(Context context, long userId, long supplierId, int type, int pageNo, int pageSize, Callback callback) {
        JsonParams jsonParams = new JsonParams();
        jsonParams.put("userId", userId);
        jsonParams.put("supplierId", supplierId);
        jsonParams.put("type", type);
        jsonParams.put("pageNo", pageNo);
        jsonParams.put("pageSize", pageSize);
        LeYaoGoClient.post(context, HttpConfig.BASE_URL + HttpConfig.METHOD_GET_FUND_RECORD_PAGE_LIST, jsonParams, callback);
    }

    /**
     * 获取最新app版本
     *
     * @param context
     * @param osType   (integer): 0：android，1：IOS，2：windows ,
     * @param appType  appType (integer): 0-手机商城App，1-其它待定 (可选 默认是0)
     * @param callback
     */
    public static void getLastAppVersion(Context context, int osType, int appType, Callback callback) {
        JsonParams jsonParams = new JsonParams();
        jsonParams.put("osType", osType);
        jsonParams.put("appType", appType);
        LeYaoGoClient.post(context, HttpConfig.BASE_URL + HttpConfig.METHOD_GET_LAST_APP_VERSION, jsonParams, callback);
    }


    /**
     * 获取融云token
     *
     * @param context
     * @param userId      userId integerMin. Value:1,
     * @param userName    用户名
     * @param portraitUri 用户头像不能为空
     * @param callback
     */
    public static void getCustomerToken(Context context, long userId, String userName, String portraitUri, Callback callback) {
        JsonParams jsonParams = new JsonParams();
        jsonParams.put("userId", userId);
        jsonParams.put("userName", userName);
        jsonParams.put("portraitUri", portraitUri);
        LeYaoGoClient.post(context, HttpConfig.BASE_URL + HttpConfig.METHOD_GET_CUSTOMER_TOKEN, jsonParams, callback);
    }

    /**
     * 获取帮助
     *
     * @param context
     * @param supplierId 运营商id integerMin. Value:1
     * @param callback
     */
    public static void getCustomerHelp(Context context, long supplierId, Callback callback) {
        JsonParams jsonParams = new JsonParams();
        jsonParams.put("supplierId", supplierId);
        LeYaoGoClient.post(context, HttpConfig.BASE_URL + HttpConfig.METHOD_GET_CUSTOMER_HELP, jsonParams, callback);
    }


    /**
     * 意见反馈
     *
     * @param context
     * @param userId          userId integerMin. Value:1,
     * @param opinionsContent 意见内容 ,
     * @param opinionsPics    (string, optional) 意见图片 多个逗号隔开 最多5个
     * @param callback
     */
    public static void ideaBack(Context context, long userId, String opinionsContent, String opinionsPics, Callback callback) {
        JsonParams jsonParams = new JsonParams();
        jsonParams.put("userId", userId);
        jsonParams.put("opinionsContent", opinionsContent);
        if (opinionsPics != null) {
            jsonParams.put("opinionsPics", opinionsPics);
        }
        LeYaoGoClient.post(context, HttpConfig.BASE_URL + HttpConfig.METHOD_IDEA_BACK, jsonParams, callback);
    }

    /**
     * 修改密码
     *
     * @param context
     * @param oldPwd   旧密码
     * @param newPwd   新密码
     * @param callback
     */
    //    public static void updatePassword(Context context, String oldPwd, String newPwd, Callback callback) {
    //        HttpParams httpParams = new HttpParams();
    //        httpParams.put("userId", String.valueOf(Utils.getUserLoginInfo().getUserId()));
    //        httpParams.put("oldPwd", AESOperator.encodeMD5(oldPwd));
    //        httpParams.put("newPwd", AESOperator.encodeMD5(newPwd));
    //        OkHttpClient.post(context, HttpConfig.BASE_URL + HttpConfig.I_METHOD_UPDATE_PWD, httpParams, callback);
    //    }


    /**
     * 获取用户详细信息
     *
     * @param context
     * @param callback
     */
    //    public static void getUserInfo(Context context, Callback callback) {
    //        HttpParams httpParams = new HttpParams();
    //        httpParams.put("userId", String.valueOf(Utils.getUserLoginInfo().getUserId()));
    //        OkHttpClient.post(context, HttpConfig.BASE_URL + HttpConfig.I_METHOD_GET_USER_INFO, httpParams, callback);
    //    }


    /**
     * 修改用户名
     *
     * @param context
     * @param alias
     * @param callback
     */
    //    public static void updateUserAlias(Context context, String alias, Callback callback) {
    //        HttpParams httpParams = new HttpParams();
    //        httpParams.put("userId", String.valueOf(Utils.getUserLoginInfo().getUserId()));
    //        httpParams.put("userAlias", alias);
    //        OkHttpClient.post(context, HttpConfig.BASE_URL + HttpConfig.I_METHOD_UPDATE_USER_ALIAS, httpParams, callback);
    //    }


    /**
     * 注册推送功能
     *
     * @param context
     * @param userId        用户ID(不传时，就是使用当前登录用户ID)
     * @param userName      用户名
     * @param platformAppId 第三方平台的AppID
     * @param deviceCode    App的机器码，由第三方平台SDK生产
     * @param callback
     */
    //    public static void registerPush(Context context, long userId, String userName, String platformAppId, String deviceCode, Callback callback) {
    //        HttpParams httpParams = new HttpParams();
    //        httpParams.put("userId", String.valueOf(userId));
    //        httpParams.put("userName", userName);
    //        httpParams.put("platformAppId", platformAppId);
    //        httpParams.put("deviceCode", deviceCode);
    //        httpParams.put("deviceNickName", String.valueOf(userId));//第三方平台注册的别名 使用userId 唯一
    //        OkHttpClient.post(context, HttpConfig.BASE_URL + HttpConfig.I_METHOD_REGISTER_PUSH, httpParams, callback);
    //    }


    /**
     * 动态上传多个图片
     *
     * @param context
     * @param fileList
     * @param callback
     */
    public static void uploadPic(Context context, List<File> fileList, Callback callback) {
        //        String fileName = Utils.getMd5ByFilePath(filePath);
        //parameter
        HttpParams httpParams = new HttpParams();
        httpParams.putFileParams("file", fileList);
        httpParams.put("uid", String.valueOf(Utils.getUserLoginInfo().getUserId()));
        httpParams.put("token", Utils.getUserLoginInfo().getTokenId());
        httpParams.put("appid", "1003");
        //header
        //        HttpHeaders httpHeaders = new HttpHeaders();
        //        httpHeaders.put("filename", fileName);
        //        httpHeaders.put("Range", "0");
        //发送请求
        UploadClient.post(context, HttpConfig.URL_CLOUD_UPLOAD, /*httpHeaders,*/ httpParams, callback);


    }

    /**
     * 上传头像文件
     *
     * @param context
     * @param callback
     */
    public static void uploadFile(Context context, File file, Callback callback) {
        //        String fileName = Utils.getMd5ByFilePath(file.getAbsolutePath());
        HttpParams httpParams = new HttpParams();
        httpParams.put("tokenId", Utils.getUserLoginInfo().getTokenId());
        httpParams.put("userId", Utils.getUserLoginInfo().getUserId());
        httpParams.put("fileName", FileUtils.getFileName(file.getAbsolutePath()));
        httpParams.put("file", file);
        //        httpParams.put("fileName", fileName);
        //        httpParams.put("fileData", JSON.toJSONString(getFileToByte(file)));

        //发送请求
        UploadClient.post(context, HttpConfig.BASE_URL + HttpConfig.METHOD_UPLOAD_FILES, /*httpHeaders,*/ httpParams, callback);


    }

    public static byte[] getFileToByte(File file) {
        byte[] buffer = null;
        try {
            FileInputStream fis = new FileInputStream(file);
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            byte[] b = new byte[1024];
            int n;
            while ((n = fis.read(b)) != -1) {
                bos.write(b, 0, n);
            }
            fis.close();
            bos.close();
            buffer = bos.toByteArray();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return buffer;
    }


    /**
     * 更新用户头像
     *
     * @param context
     * @param userPic
     * @param callback
     */
    //    public static void updateUserPic(Context context, String userPic, Callback callback) {
    //        updateUser(context, null, null, userPic, null, null, null, null, null, null, null, callback);
    //
    //    }

    /**
     * 修改用户基本信息
     *
     * @param context
     * @param nickName   昵称
     * @param realName   真实姓名
     * @param userPic    用户头像
     * @param sex        性别
     * @param birthday   生日
     * @param province   省份
     * @param city       城市
     * @param area       地区
     * @param strAddress 省-城市-地区(中文)
     * @param address    详细地址
     * @param callback
     */
    //    public static void updateUser(Context context, String nickName, String realName, String userPic, String sex, String birthday, String province, String
    //            city, String area, String strAddress, String address, Callback callback) {
    //        HttpParams httpParams = new HttpParams();
    //        httpParams.put("userId", String.valueOf(Utils.getUserLoginInfo().getUserId()));
    //        if (!CheckUtils.isEmpty(nickName))
    //            httpParams.put("nickName", nickName);
    //        if (!CheckUtils.isEmpty(realName))
    //            httpParams.put("realName", realName);
    //        if (!CheckUtils.isEmpty(userPic))
    //            httpParams.put("userPic", userPic);
    //        if (!CheckUtils.isEmpty(sex))
    //            httpParams.put("sex", sex);
    //        if (!CheckUtils.isEmpty(birthday))
    //            httpParams.put("birthday", birthday);
    //        if (!CheckUtils.isEmpty(province))
    //            httpParams.put("province", province);
    //        if (!CheckUtils.isEmpty(city))
    //            httpParams.put("city", city);
    //        if (!CheckUtils.isEmpty(area))
    //            httpParams.put("area", area);
    //        if (!CheckUtils.isEmpty(strAddress))
    //            httpParams.put("strAddress", strAddress);
    //        if (!CheckUtils.isEmpty(address))
    //            httpParams.put("address", address);
    //        OkHttpClient.post(context, HttpConfig.BASE_URL + HttpConfig.I_METHOD_UPDATE_USER, httpParams, callback);
    //
    //    }

    /**
     * 变更用户手机号
     *
     * @param context
     * @param userMobile    原手机号
     * @param mobileCode    原手机验证码
     * @param newUserMobile 新手机号
     * @param newMobileCode 新手机验证码
     * @param callback
     */
    //    public static void updateMobile(Context context, String userMobile, String mobileCode, String newUserMobile, String newMobileCode, Callback callback) {
    //        HttpParams httpParams = new HttpParams();
    //        httpParams.put("userId", String.valueOf(0/*Utils.getUserLoginInfo().getUserId()*/));
    //        httpParams.put("userMobile", userMobile);
    //        httpParams.put("mobileCode", mobileCode);
    //        httpParams.put("newUserMobile", newUserMobile);
    //        httpParams.put("newMobileCode", newMobileCode);
    //        OkHttpClient.post(context, HttpConfig.BASE_URL + HttpConfig.I_METHOD_UPDATE_USER_MOBILE, httpParams, callback);
    //    }


    /**
     * 获取卡券详情
     * @param context
     * @param cardId
     */
    public static void getCardDetail(Context context, long cardId, Callback callback){

        JsonParams jsonParams = new JsonParams();
        jsonParams.put("userId", Utils.getUserLoginInfo().getUserId());
        jsonParams.put("cardItemId", cardId);
        LeYaoGoClient.post(context, HttpConfig.BASE_URL + HttpConfig.METHOD_GET_CARD_DETAIL, jsonParams, callback);
    }

}
